package swissmap.RMAP;

import java.io.IOException;

import swissmap.Constants;
import swissmap.RMAP.utils.MapCreationException;

public class RMAPbuilder {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		
		TwoNavRmap myRmap=new TwoNavRmap();
		try {
			int low=3;
			String res_s=Constants.res_arr[low]; //"50k"

			
			int xMin=0;
			int	yMin=0;
			int xMax=0;  
			int yMax=0;
			
//			//generate swiss map in 4 parts
//			for(int t=0;t<4;t++){
//				if(t==0){
//					//lower left
//					xMin=Constants.dimx_start.get(res_s);
//					xMax=Constants.dimx_start.get(res_s)+(Constants.dimx_end.get(res_s)-Constants.dimx_start.get(res_s))/2;
//					yMin=Constants.dimy_start.get(res_s);
//					yMax=Constants.dimy_start.get(res_s)+(Constants.dimy_end.get(res_s)-Constants.dimy_start.get(res_s))/2;
//					
//				}else if(t==1){
//					//lower right
//					xMin=Constants.dimx_start.get(res_s)+((Constants.dimx_end.get(res_s)-Constants.dimx_start.get(res_s))/2)+1;
//					xMax=Constants.dimx_end.get(res_s);
//				}else if(t==2){
//					//upper left
//					xMin=Constants.dimx_start.get(res_s);
//					xMax=Constants.dimx_start.get(res_s)+(Constants.dimx_end.get(res_s)-Constants.dimx_start.get(res_s))/2;
//					yMin=(Constants.dimy_start.get(res_s)+(Constants.dimy_end.get(res_s)-Constants.dimy_start.get(res_s))/2)+1;
//					yMax=Constants.dimy_end.get(res_s);
//				}else if(t==3){
//					//upper right
//					xMin=Constants.dimx_start.get(res_s)+((Constants.dimx_end.get(res_s)-Constants.dimx_start.get(res_s))/2)+1;
//					xMax=Constants.dimx_end.get(res_s);
//				}
			
			
			
			//10k-50k aufgeteilt in west & ost, jede RMAP ca 3.5GB
			for(int t=0;t<2;t++){
				if(t==0){
					//left
					xMin=Constants.dimx_start.get(res_s);
					xMax=Constants.dimx_start.get(res_s)+(Constants.dimx_end.get(res_s)-Constants.dimx_start.get(res_s))/2;
					yMin=Constants.dimy_start.get(res_s);
					yMax=Constants.dimy_end.get(res_s);
					
				}else if(t==1){
					//right
					xMin=Constants.dimx_start.get(res_s)+((Constants.dimx_end.get(res_s)-Constants.dimx_start.get(res_s))/2)+1;
					xMax=Constants.dimx_end.get(res_s);
				}
			
			myRmap.initLayerCreation("swiss"+(Constants.map?"":"_ortho")+"_"+(t==0?"west":"east"), low, xMin, xMax, yMin, yMax); 
			for(int i=0;i<=low;i++){
				if(i==0){
					System.out.println("X: "+myRmap.xMin+" "+myRmap.xMax+"\t\t\t   Y: "+myRmap.yMin+"  "+myRmap.yMax);
					myRmap.xMax=myRmap.xMax+1;
					myRmap.yMax=myRmap.yMax+1;
					for(int k=0;k<low;k++){
						myRmap.xMin=myRmap.xMin*2;
						myRmap.yMin=myRmap.yMin*2;
						
						myRmap.xMax=myRmap.xMax*2;
						myRmap.yMax=myRmap.yMax*2;
					}
					myRmap.xMax=myRmap.xMax-1;
					myRmap.yMax=myRmap.yMax-1;
				}
				else{
					myRmap.xMin=myRmap.xMin/2;
					myRmap.yMin=myRmap.yMin/2;
					myRmap.xMax=(myRmap.xMax+1)/2-1;
					myRmap.yMax=(myRmap.yMax+1)/2-1;
				}
				System.out.println("X: "+myRmap.xMin+" "+myRmap.xMax+"\t\t   Y: "+myRmap.yMin+"  "+myRmap.yMax);
				
				myRmap.createMap(i);
			}
			myRmap.finishLayerCreation();
			
			System.out.println("FINISHED: "+myRmap.getRmapPath());
			}
		} catch (IOException e) {
			e.printStackTrace();
		} catch (MapCreationException e) {
			e.printStackTrace();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		
	}

}
